#ifndef PARAFLUIDDIALOGSIMULATION_H
#define PARAFLUIDDIALOGSIMULATION_H

#include "parafluidsimulation.h"
#include "ui_dialogsimulation.h"

#include <QDialog>
#include <QWidget>

namespace ParaFluid
{
	
	/**
	* Simulation Dialog
	*/
	class DialogSimulation
		: public QDialog
		, private Ui::DialogSimulation
	{
		
		Q_OBJECT
		
	public:
		
		/**
		* Destructor
		*/
		~DialogSimulation();
		
		/**
		* Default Constructor
		*/
		DialogSimulation(QWidget * parent = 0, Simulation * simulation = 0);
		
		void sync();
		
	public slots:
		
		void pause();
		
		void resetSimulation();
		
		void resetParameters();
		
		void setSmoothingDistance(double value);
		
		void setTimeStep(double value);
		
		void setGravity();
		
		void setSubstanceMass(double value);
		
		void setSubstancePressureFactor(double value);
		
		void setSubstanceRestDensity(double value);
		
		void setSubstanceViscosityFactor(double value);
		
	protected:
		
	private:
		
		/**
		* Simulation
		*/
		Simulation * _simulation;
		
		/**
		* Copy Constructor should not be used
		*/
		DialogSimulation(const DialogSimulation & other);
		
		/**
		* Assignment Operator should not be used
		*/
		DialogSimulation & operator= (const DialogSimulation & rhs);
		
	};
	
}

#endif
